home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / xlib03.zip / XLIB.H < prev    next >
C/C++ Source or Header  |  1993-04-05  |  5KB  |  122 lines

  1. /*----------------------------------------------------------------------
  2. ;
  3. ; XLIB - header file
  4. ;
  5. ;
  6. ;
  7. ; ****** XLIB - Mode X graphics library                ****************
  8. ; ******                                               ****************
  9. ; ****** Written By Themie Gouthas                     ****************
  10. ; ****** Aeronautical Research Laboratory              ****************
  11. ; ****** Defence Science and Technology Organisation   ****************
  12. ; ****** Australia                                     ****************
  13. ;
  14. ; egg@dstos3.dsto.gov.au
  15. ; teg@bart.dsto.gov.au
  16. ;
  17. ; Header file contributed by Darren Lyon (darren@nicky.DIALix.oz.au)
  18. ;
  19. ;
  20. ;  Terminology & notes:
  21. ;         VRAM ==   Video RAM
  22. ;         SRAM ==   System RAM
  23. ;         X coordinates are in pixels unless explicitly stated
  24. ;
  25. ;----------------------------------------------------------------------*/
  26.  
  27. #ifndef _XLIB_H_
  28. #define _XLIB_H_
  29.  
  30. #define BYTE unsigned char
  31. #define WORD unsigned int
  32.  
  33. #define X_MODE_320x200  0
  34. #define X_MODE_320x240  1
  35. #define X_MODE_360x200  2
  36. #define X_MODE_360x240  3
  37. #define X_MODE_320x400  4
  38. #define X_MODE_320x480  5
  39. #define X_MODE_360x400  6
  40. #define X_MODE_360x480  7
  41.  
  42. #define BACKWARD 0
  43. #define FORWARD  1
  44.  
  45. #define X_MODE_INVALID  -1
  46. #define ERROR            1
  47. #define OK               0
  48.  
  49. /* FUNCTIONS =========================================================== */
  50.  
  51. extern WORD x_set_mode(
  52.         WORD mode,                /* Initialize x mode           */
  53.         WORD WidthInPixels);
  54.  
  55. extern  void x_select_default_plane( /*Enables Read/Write access to a    */
  56.                 BYTE plane);         /* a specified plane                */
  57.  
  58. extern void x_set_splitscreen(            /* set the split screen start  */
  59.         WORD line);               /*scan line (initialize)       */
  60.  
  61. extern void x_set_start_addr(
  62.         WORD X,                   /* Set the screen start        */
  63.         WORD Y);                  /* address in video ram        */
  64.  
  65. extern void x_hide_splitscreen(void); /* Disable the split screen (Split */
  66.                                       /* Screen RAM remains reserved)    */
  67.  
  68. extern void x_show_splitscreen(void); /* Enable the split screen (given it */
  69.                                       /* was previously "hidden")          */
  70.  
  71.  
  72. extern void x_adjust_splitscreen(   /* Adjust the start scan line of the */
  73.                 WORD line);         /* split screen                      */
  74.  
  75.  
  76. extern WORD x_set_doublebuffer(     /* Enable double buffering with a    */
  77.                 WORD PageHeight);   /* specified page height             */
  78.  
  79.  
  80. extern void x_page_flip(        /* Swap visible page (only when double   */
  81.                 WORD X,         /* buffering is active) & sets virt start*/
  82.                 WORD Y);
  83.  
  84. extern void x_text_mode(void);  /* return to text mode */
  85.  
  86.  
  87. /* VARIABLES =========================================================== */
  88.  
  89. extern BYTE InGraphics;             /* non zero if in X graphics mode      */
  90. extern WORD CurrXMode;              /* contains current X graphics mode id */
  91. extern WORD ScrnPhysicalByteWidth;  /* Physical screen width in bytes      */
  92. extern WORD ScrnPhysicalPixelWidth; /* Physical screen width in pixels     */
  93. extern WORD ScrnPhysicalHeight;     /* Physical screen height in pixels    */
  94. extern WORD ErrorValue;             /* Error return value                  */
  95. extern WORD SplitScrnOffs;          /* Offset in VRAM  of split screen     */
  96. extern WORD SplitScrnScanLine;      /* Scan line split screen starts at    */
  97.                     /* initially. Resizing the split scrn  */
  98.                     /* using the other functions does not  */
  99.                     /* change this value                   */
  100. extern WORD SplitScrnVisibleHeight; /* Height of the visible portion of the*/
  101.                     /* split screen.                       */
  102. extern WORD Page0_Offs;             /* Offset in VRAM of main virt. screen */
  103. extern WORD Page1_Offs;             /* Offset in VRAM of 2nd virt. screen  */
  104. extern WORD ScrnLogicalByteWidth;   /* Virtual screen width in bytes       */
  105. extern WORD ScrnLogicalPixelWidth;  /* Virtual screen width in pixels      */
  106. extern WORD ScrnLogicalHeight;      /* Virtual screen height in pixels     */
  107. extern WORD MaxScrollX;             /* Max X position of physical screen   */
  108.                                     /*  within virtual screen              */
  109. extern WORD MaxScrollY;             /* Max Y position of physical screen   */
  110.                                     /*  within virtual screen              */
  111. extern WORD DoubleBufferActive;     /* Indicates whether double buffering  */
  112.                                     /* is active                           */
  113. extern WORD VisiblePageIdx;         /* Index number of visible page 0 or 1 */
  114. extern WORD HiddenPageOffs;         /* Offset of Hidden Pg | only valid    */
  115. extern WORD VisiblePageOffs;        /* Offset of Visible Pg| for D.B. mode */
  116. extern WORD NonVisual_Offs;         /* Offset of first non-visible VRAM    */
  117.  
  118.  
  119. #endif
  120.  
  121.  
  122.